// 当一个对象类型被多次使用的时候，一般使用接口(interface)描述对象的类型，达到复用目的
export {}

// interface I接口名称 {}
// type CustomFunc = {}

// interface 只能用于对象类型
interface IPeople {
  username:string
  age:number
  run:()=>undefined
}

let person:IPeople = {
  username:'zs',
  age:18,
  run(){
    return undefined
  }
}

// 总结：
// 接口和自定义类型的区别
// 相同点：都可以给对象指定类型
// 不同点：接口只能为对象指定类型，类型别名可以任意类型指定别名
//  故推荐使用type定义



// 接口的继承：
interface Point2D {
  x:number,
  y:number
}

// 可以这样写
// interface Point3D {
//   x:number,
//   y:number,
//   z:number
// }

// 使用继承
interface Point3D extends Point2D {
   z:number
}

let k :Point3D = {
  x:1,y:2,z:4
}





